package com.ht.api.call.func.impl.kf;

import com.ht.api.bean.AjaxResult;
import com.ht.api.bean.LoginBean;
import com.ht.api.call.func.IFunctionCall;
import com.ht.api.db.DbList;
import com.ht.api.db.DbPage;
import com.ht.api.db.Mapper;
import com.ht.api.db.SqlParser;

import cn.hutool.json.JSONObject;
import lombok.extern.slf4j.Slf4j;

/**
 * 历史会话查询
 */
@Slf4j
public class KfSessionHistoryQueryFunctionCall implements IFunctionCall {


	@Override
	public String getName() {
		return "历史会话查询";
	}

	@Override
	public Object execute(LoginBean me, JSONObject param, AjaxResult result) {

		SqlParser sqlParser = param.toBean(SqlParser.class).setTable("kf_session");

		SqlParser relationParser = SqlParser.create("kf_session_servicer_relation");
		relationParser.select("session_id");
		relationParser.where("userid", me.getLoginIdStr());
		relationParser.where("status", 1);

		sqlParser.where("main_id", "in", relationParser);

		DbList list = sqlParser.query(me.getDataSource());

		Integer pageNum = sqlParser.getPageNum();
		Integer pageSize = sqlParser.getPageSize();

		// 总记录数（有分页时，才查总记录数）
		Long total = null;
		if (pageNum != null) {
			// 注意调用sql.count方法后，将会失去limit字段，从而丢失页码信息
			total = sqlParser.count(me.getDataSource());
		}

		// 翻译字典字段
		Mapper.translate(me.getDataSource(), list);

		// 构造分页对象
		DbPage dbPage = DbPage.builder()
				.pagenum(pageNum)
				.pagesize(pageSize)
				.total(total)
				.record(list)
				.build();


		return dbPage;
	}
	

}
